package com.nageoffer.shortlink.project.dao.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.nageoffer.shortlink.project.dao.entity.base.BaseDo;
import lombok.*;

import java.util.Date;

/**
 * 短链接实体
 */
@EqualsAndHashCode(callSuper = true)
@TableName("t_link")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ShortLinkDO extends BaseDo {

    /**
     * 域名
     * 数据库字段：domain (varchar(128))
     */
    private String domain;

    /**
     * 短链接
     * 数据库字段：short_uri (varchar(8))
     */
    private String shortUri;

    /**
     * 完整短链接
     * 数据库字段：full_short_url (varchar(128))
     */
    private String fullShortUrl;

    /**
     * 原始链接
     * 数据库字段：origin_url (varchar(1024))
     */
    private String originUrl;

    /**
     * 点击量
     * 数据库字段：click_num (int(11))
     */
    @TableField("click_num")
    private Integer clickNum;

    /**
     * 分组标识
     * 数据库字段：gid (varchar(32))
     */
    private String gid;

    /**
     * 启用标识 0：未启用 1：已启用
     * 数据库字段：enable_status (tinyint(1))
     */
    @TableField("enable_status")
    private Integer enableStatus;

    /**
     * 创建类型 0：控制台 1：接口
     * 数据库字段：created_type (tinyint(1))
     */
    @TableField("created_type")
    private Integer createdType;

    /**
     * 有效期类型 0：永久有效 1：用户自定义
     * 数据库字段：valid_date_type (tinyint(1))
     */
    @TableField("valid_date_type")
    private Integer validDateType;

    /**
     * 有效期
     * 数据库字段：valid_date (datetime)
     */
    @TableField("valid_date")
    private Date validDate;

    /**
     * 描述
     * 数据库字段：describe (varchar(1024))
     */
    @TableField("`describe`")
    private String describe;

    /**
     * 网站标识
     * 数据库字段：favicon (varchar(256))
     */
    @TableField("favicon")
    private String favicon;

    /**
     * 历史pv
     */
    private Integer totalPv;

    /**
     * 历史uv
     */
    private Integer totalUv;

    /**
     * 历史uip
     */
    private Integer totalUip;

    /**
     * 删除时间戳
     */
    private Long delTime;
}
